#pragma once

#include<iostream>
#include<vector>
#include<ctime>

//函数指针
typedef void (*task_t)();

void PrintLog(){
    std::cout<<"我是一个打印日志的任务"<<std::endl;
}

void DownLoad(){
    std::cout<<"我是一个下载任务"<<std::endl;
}

void UpLoad(){
    std::cout<<"我是一个上传任务"<<std::endl;
}

class TaskManager{
public:
    TaskManager(){
        srand(time(nullptr));
    }

    void Register(task_t t){
        _tasks.push_back(t);
    }

    int Code(){
        return rand() % _tasks.size();
    }

    void Excute(int code){
        if(code >= 0 && code < _tasks.size()){
            //调用函数     
            _tasks[code]();
        }
    }

    ~TaskManager(){
        
    }
private:
    std::vector<task_t> _tasks;
};